package main

import (
	"fmt"
)

func main() {
	var arr [6]int = [6]int{3, 6, 7, 10, 13, 18}
	// var 切片名 []类型 = 数组的一个片段引用 [1:4] 索引从1开始 4结束(不包含4)
	var slice []int = arr[1:4]

	fmt.Println("arr: ", arr)
	fmt.Println("slice: ", slice)
	fmt.Println("slice长度: ", len(slice))
	fmt.Println("slice容量: ", cap(slice))

	// 内存分析
	fmt.Printf("数组[1]地址: %p\n", &arr[1])
	fmt.Printf("切片[0]地址: %p\n", &slice[0])

	slice[1] = 16
	fmt.Println("arr: ", arr)
	fmt.Println("slice: ", slice)

	// 简写
	// 从最初到3
	// var slice []int = arr[:3]
	// 从3到最后
	// var slice []int = arr[3:]
	// 从最初到最后
	// var slice []int = arr[:]

	// 对切片再切片
	slice2 := slice[:2]
	fmt.Println("slice2: ", slice2)
	slice2[0] = 100
	
	fmt.Println("arr: ", arr)
	fmt.Println("slice: ", slice)
	fmt.Println("slice2: ", slice2)
}	